#ifndef ROOMS_HH
#define ROOMS_HH

#include "Iroom.hh"
#include "gameFunction.hh"
#include "IO.hh"
#include "Item.hh"

namespace rooms {
    class spring_room : public Iroom {
    public:
        std::string type;

    public: 
        spring_room();
        spring_room(const spring_room& other);
        spring_room& operator=(const spring_room& other);
        ~spring_room() override;

        std::string getType();
        void event(std::vector<ICharacter*>& hero_team) override;
    };

    class fight_room : public Iroom {
    public:
        std::string type;
    
    public: 
        fight_room();
        ~fight_room() override;
        fight_room(const fight_room& other);
        fight_room& operator=(const fight_room& other);
    
        std::string getType();
        void event(std::vector<ICharacter*>& hero_team) override;
    };

    class empty_room : public Iroom {
    public:
        std::string type;
    
    public: 
        empty_room();
        ~empty_room() override;
        empty_room(const empty_room& other);
        empty_room& operator=(const empty_room& other);
    
        std::string getType();
        void event(std::vector<ICharacter*>& hero_team) override;
    };

    class item_room : public Iroom {
    public:
        std::string type;
    
    public: 
        item_room();
        ~item_room() override;
        item_room(const item_room& other);
        item_room& operator=(const item_room& other);
    
        std::string getType();
        void event(std::vector<ICharacter*>& hero_team) override;
    };
}

#endif